import futbol5.Condicional
import futbol5.Estandar
import futbol5.Jugador
import futbol5.Partido
import org.junit.Before
import org.junit.Test

import static org.junit.Assert.*
import futbol5.Administrador
import futbol5.CompuestaAND
import futbol5.CompuestaOR



class TestCalificaciones {
	
	Partido partido
	Jugador ale
	Jugador eric
	Jugador daiana
	Condicional tipoAle
	Administrador adminPartidos
	CompuestaAND compAnd
	CompuestaOR compOr

	
		
	@Before
	def void init(){
		partido = new Partido
		
		ale = new Jugador
		eric = new Jugador
		daiana = new Jugador
		
		adminPartidos = new Administrador
		
				
		
		tipoAle = new Condicional
		ale.categoria = tipoAle
		eric.categoria = new Estandar
		daiana.categoria = new Estandar
		
		compAnd = new CompuestaAND
		compOr = new CompuestaOR
		
		partido.agregarJugador(eric)
		
	}
	@Test
 	def void testRecomendacionRechazada(){
 		ale.categoria = new Estandar
 		ale.recomendarJugador(daiana,adminPartidos)
 		var b = adminPartidos.solicitudes.iterator.next
 		adminPartidos.rechazar(b)
 		
 		assertEquals(1,adminPartidos.solicitudesRechazadas.size())
 	}
 	
 	@Test
 	def void testRecomendacionAceptada(){
 		eric.recomendarJugador(daiana,adminPartidos)
 		var b = adminPartidos.solicitudes.iterator.next
 		adminPartidos.aceptar(b)
 		
 		assertTrue(adminPartidos.jugadoresPosibles.contains(daiana))
 		}
 
	@Test
	def void testPuntuacionAceptada(){
		daiana.calificar(ale,8,"bastante bien",adminPartidos)
		var b = adminPartidos.solicitudes.iterator.next
		adminPartidos.aceptar(b)
		
		assertEquals(1,ale.puntuaciones.size())
	} 
	
	@Test
	def void testPuntuacionRechazada(){
		eric.calificar(ale,4,"no tan bueno",adminPartidos)
		var b = adminPartidos.solicitudes.iterator.next
		adminPartidos.rechazar(b)
		
		assertEquals(1,eric.puntuaciones.size())
	}
	
	
}